#!/usr/bin/env python3
from pwn import *
with open('program', 'rb') as f:
dat = f.read()
i = 0
while i < len(dat):
op = dat[i]
print(hex(i) + ': ', end='')
i += 1
if op == 0:
print('nop')
if op == 1:
print('add')
elif op == 2:
print('sub')
elif op == 3:
print('and')
elif op == 4:
print('or')
elif op == 5:
print('xor')
elif op == 6:
print('shl')
elif op == 7:
print('shr')
elif op == 8:
print('getchar')
elif op == 9:
print('putchar')
elif op == 10:
print('push', hex(dat[i]))
i += 1
elif op == 11:
target = (dat[i] << 8) | dat[i + 1]
if target > 0x8000:
target = -(0x10000 - target)
print('jneg', hex(i + 2 + target))
i += 2
elif op == 12:
target = (dat[i] << 8) | dat[i + 1]
if target > 0x8000:
target = -(0x10000 - target)
print('jz', hex(i + 2 + target))
i += 2
elif op == 13:
target = (dat[i] << 8) | dat[i + 1]
if target > 0x8000:
target = -(0x10000 - target)
print('jmp', hex(i + 2 + target))
i += 2
elif op == 14:
print('pop')
elif op == 15:
print('dup')
elif op == 16:
print('reverse')
i += 1
elif op == 40:
print('dbg')
else:
print('und')